package com.wbp.cms.core.dao.base;

import java.util.List;
import java.util.Map;

import org.mybatis.spring.SqlSessionTemplate;

import com.wbp.cms.client.common.Page;

public interface BaseDao<T> {

	 /**
     * 函数功能说明 ：单条插入数据. 
     * 
     * @参数：@param entity
     * @参数：@return
     * @return：int
     * @throws
     */
    int insert(T entity);

    /**
     * 函数功能说明 ： 批量插入数据. 
     * 
     * @参数：@param list
     * @参数：@return
     * @return：int
     * @throws
     */
    int batchInsert(List<T> list);

    /**
     * 函数功能说明 ：根据id单条更新数据. 
     * 
     * @参数：@param entity
     * @参数：@return
     * @return：int
     * @throws
     */
    int update(T entity);

    /**
     * 函数功能说明 ： 根据id批量更新数据. 
     * 
     * @参数：@param list
     * @参数：@return
     * @return：int
     * @throws
     */
    int batchUpdate(List<T> list);

    /**
     * 函数功能说明 ： 根据column批量更新数据.
     * 
     * @参数：@param paramMap
     * @参数：@return
     * @return：int
     * @throws
     */
    int updateByParams(Map<String, Object> paramMap);

    /**
     * 函数功能说明 ： 根据id删除数据. 修改者名字：
     * 
     * @参数：@param id
     * @参数：@return
     * @return：int
     * @throws
     */
    int delete(String id);

    /**
     * 函数功能说明 ： 根据id批量删除数据. 
     * 
     * @参数：@param list
     * @参数：@return
     * @return：int
     * @throws
     */
    int batchDelete(List<T> list);

    /**
     * 函数功能说明 ： 根据column批量删除数据. 
     * 
     * @参数：@param paramMap
     * @参数：@return
     * @return：int
     * @throws
     */
    int deleteByParams(Map<String, Object> paramMap);
    
    /**
     * 函数功能说明 ： 根据id查询数据. 
     * 
     * @参数：@param id
     * @参数：@return
     * @return：T
     * @throws
     */
    T queryEntityById(Long id);
    /**
     * 函数功能说明 ： 根据column查询数据. 
     * 
     * @参数：@param paramMap
     * @参数：@return
     * @return：T
     * @throws
     */
    public T queryEntityByParams(Map<String, Object> paramMap);
    
    public T queryEntity(@SuppressWarnings("rawtypes") Page  page);
    
    /**
     * 根据条件查询列表数据.
     */
    public List<T> queryListByParams(Map<String, Object> paramMap);
    
    /**
     * 根据查询条件查询
     * @param pager
     * @return
     */
    public List<T> queryList(@SuppressWarnings("rawtypes") Page pager);
    /**
     * 函数功能说明 ： 根据column查询记录数.
     * 
     * @参数：@param paramMap
     * @参数：@return
     * @return：Long
     * @throws
     */
    Long queryCountByParams(Map<String, Object> paramMap);
    
    Long queryCount(@SuppressWarnings("rawtypes") Page page) ;
    
    /**
     * 函数功能说明 ： 分页查询数据 . 修改者名字：
     * 
     * @参数：@param Page
     * @参数：@param paramMap
     * @参数：@return
     * @return：PageBean
     * @throws
     */
    @SuppressWarnings("rawtypes")
    public Page queryByPage(Page pageParam, Map<String, Object> paramMap);
    
    @SuppressWarnings("rawtypes")
    public Page queryByPage(Page pageParam );

    public SqlSessionTemplate getSessionTemplate();

   // public SqlSession getSqlSession();
    
}
